/**
 * @Title BaseDao.java
 * @Package com.eppear.jpfm.dao
 * @Description
 * @author JianFeng Zhang(张建锋)
 * @date 2017-01-16 下午7:42:31
 * @version 
 */
package com.eppear.jpfm.framework.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

/**
 * @ClassName BaseDao
 * @Description
 *         通用dao类,用于自定义sql语句查询的情况,以XML配置文件的方式声明了此类,
 *         以供服务层注入使用.
 * @author JianFeng Zhang(张建锋)
 * @date   2017-01-16 下午7:42:31
 *
 */
public class BaseDao {

	//private static final Logger log = LoggerFactory.getLogger(BaseDao.class);
	@Autowired
	protected SqlSession sqlSession;
	
	/**
	 * @Description
	 *   查询单条记录的方法
	 * @author JianFeng Zhang(张建锋)
	 * @date 2017-01-16 下午7:58:24
	 * @param sqlId SQL语句ID,即文件中的namespace.SQLID
	 * @param parameter  查询参数
	 * @return Map类型的记录,如果有多条,则会报错
	 */
	public Map<String,Object> selectOneFromXML(String sqlId, Object parameter){    	    	
    	return sqlSession.selectOne(sqlId, parameter);
    }
	
	/**
	 * @Description
	 * 	查询单条记录的方法,用于无需SQL参数的情况
	 * @author JianFeng Zhang(张建锋)
	 * @date 2017-01-16 下午8:31:46
	 * @param sqlId SQL语句ID,即文件中的namespace.SQLID
	 * @return
	 */
	public Map<String,Object> selectOneFromXML(String sqlId){
		return sqlSession.selectOne(sqlId);
	}
	
	/**
	 * @Description
	 *         查询多条记录的方法
	 * @author JianFeng Zhang(张建锋)
	 * @date 2017-01-16 下午8:23:33
	 * @param sqlId SQL语句ID,即文件中的namespace.SQLID
	 * @param parameter 查询参数
	 * @return 类型为 List<Map>
	 */
	public List<Map> selectFromXML(String sqlId, Object parameter){
		return sqlSession.selectList(sqlId, parameter);
	}
	
	/**
	 * @Description
	 * 查询多条记录的方法 ,用于无需SQL参数的情况
	 * @author JianFeng Zhang(张建锋)
	 * @date 2017-01-16 下午8:38:07
	 * @param sqlId SQL语句ID,即文件中的namespace.SQLID
	 * @return 类型为 List<Map>
	 */
	public List<Map> selectFromXML(String sqlId){
		return sqlSession.selectList(sqlId);
	}

	/**
	 * @Title updateFromXML 
	 * @Description 
	 *   更新记录的方法,有参数
	 * @author JianFeng Zhang(张建锋) 
	 * @data   2017-04-02 上午9:10:07
	 * @param sqlId SQL语句ID,即文件中的namespace.SQLID
	 * @param parameter 更新参数
	 * @return 被更新的记录数
	 */
	public Integer updateFromXML(String sqlId, Object parameter){
		return sqlSession.update(sqlId, parameter);
	}
	
	/**
	 * @Title updateFromXML 
	 * @Description 
	 *   更新记录的方法,无参数
	 * @author JianFeng Zhang(张建锋) 
	 * @data   2017-04-02 上午9:11:51
	 * @param sqlId SQL语句ID,即文件中的namespace.SQLID
	 * @return 被更新的记录数
	 */
	public Integer updateFromXML(String sqlId){
		return sqlSession.update(sqlId);
	}
}
